package com.example.gaoyang.util;

public class PileUtil {

    /**
     * 判断字符串是否符合桩号格式 Kxxx+yyy
     * xxx和yyy都是数字，xxx可以是1、10、100、1000等
     * yyy如果不到三位数要前面补0（如001, 010, 100）
     *
     * @param pileCode 桩号字符串
     * @return 是否符合格式
     */
    public static boolean isValidPileCode(String pileCode) {
        if (pileCode == null || pileCode.isEmpty()) {
            return false;
        }
        // 正则表达式匹配 Kxxx+yyy 格式
        // K开头，后面跟着至少1位数字，+号，然后是3位数字（不足3位前面补0）
        String pattern = "^K\\d+\\+\\d{3}$";
        if (!pileCode.matches(pattern)) {
            return false;
        }
        // 进一步验证 + 号前后部分
        String[] parts = pileCode.split("\\+");
        if (parts.length != 2) {
            return false;
        }
        String prefix = parts[0].substring(1); // 去掉K前缀
        String suffix = parts[1];
        // 检查前缀是否为有效数字（不以0开头，除非是单独的0）
        if (prefix.length() > 1 && prefix.startsWith("0")) {
            return false;
        }
        try {
            Integer.parseInt(prefix);
            Integer.parseInt(suffix);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }

    /**
     * 将桩号格式字符串转换为数值
     * 例如：K1+100 转换为 1100，K1461+003 转换为 1461003
     *
     * @param pileCode 桩号字符串，格式为 Kxxx+yyy
     * @return 桩号对应的数值，如果格式不正确返回 null
     */
    public static Long parsePileCodeToNumber(String pileCode) {
        if (pileCode == null || pileCode.isEmpty()) {
            return null;
        }
        // 检查是否符合 Kxxx+yyy 格式
        if (!pileCode.matches("^K\\d+\\+\\d{3}$")) {
            return null;
        }
        try {
            // 分割字符串获取前缀和后缀
            String[] parts = pileCode.split("\\+");
            String prefix = parts[0].substring(1); // 去掉K前缀
            String suffix = parts[1];
            // 将前缀乘以1000再加上后缀
            long prefixValue = Long.parseLong(prefix);
            long suffixValue = Long.parseLong(suffix);
            return prefixValue * 1000 + suffixValue;
        } catch (Exception e) {
            return null;
        }
    }

}
